Uplift your Linux systems programming skills with systemd and D-Bus Practical examples and best practices on how to leverage systemd and D-Bus in Go by Leonid Vasilyev At: FOSDEM 2020 https://video.fosdem.org/2020/UB2.252A/golinux.webm Systemd is a de-facto standard process manager in all mainstream Linux distributions for almost a decade. D-Bus is most widely used inter-process communication on a local host. It's used in many core apps on Linux Desktop. Yet both systemd and D-Bus are undervalued. Very often, programs that are only intended to run on Linux attempt to re-implement (with bugs) what systemd and D-Bus already provide (for example: watchdog function, reliable process termination, notifying another program about some event, coordination between multiple processes). The goal of this talk is to shift perspective on systemd and D-Bus (using concrete practical examples in Go), and show how basic building block these systems provide can be re-used in software you write for modern Linux system. This is an exploratory talk. Then intent is to look at systemd and D-Bus from a different angle. Most of current tutorials about systemd focused on operating a service like apache, nginx or redis. D-Bus tutorials are very abstract, basic and lack any concrete useful use-cases. I plan to present few recent additions to systemd, such as portable services and resource control. As well as re-introduce few existing concepts, like sd-notify, watchdogs and transient units. On D-Bus I plan to show how to use bus abstraction and few neat features, like passing file descriptors and receiving notifications. The focus is on how to not re-invent things that systemd and D-Bus do much better. Examples are given as a few simple Golang programs, with full source available on ❮a href="https://github.com/lvsl/fosdem-2020-go-dbus-systemd"❯github❮/a❯. The indented audience is anyone who write and operate Go code on Linux. Preferred experience of the audience: basic knowledge of Linux and Golang, familiarity with systemd and D-Bus concepts would be useful as well. Room: UB2.252A (Lameere) Scheduled start: 2020-02-02 13:30:00